package cn.starrysky108.simpleerp.system.service;

import cn.starrysky108.simpleerp.system.entity.SystemFile;
import cn.starrysky108.simpleerp.system.response.UploadResponse;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.core.io.Resource;
import org.springframework.web.multipart.MultipartFile;

import java.nio.file.Path;
import java.util.stream.Stream;

/**
 * <p>
 * 资源文件表 服务类
 * </p>
 *
 * @author Carl Lee
 */
public interface SystemFileService extends IService<SystemFile> {

    /**
     * 保存文件到服务器
     *
     * @param file 文件
     * @return 是否上传成功
     */
    UploadResponse store(MultipartFile file);

    /**
     * 列出所有文件
     *
     * @return stream
     */
    Stream<Path> loadAll();

    /**
     * 根据文件名返回Resource
     *
     * @param path 文件名
     * @return Resource
     */
    Resource loadByPath(String path);
    /**
     * 根据文件名返回Resource
     *
     * @param fileId 文件id
     * @return Resource
     */
    Resource loadById(Long fileId);

    /**
     * 删除所有文件
     */
    void deleteAll();

    /**
     * 删除单个文件
     * @param fileId 文件id
     * @return bool
     */
    Boolean delete(Long fileId);
}
